/**
 * Copyright (C), 2018 store
 * Encoding: UTF-8
 * Date: 19-9-5 下午4:31
 * History:
 */
package com.swak.frame.handler;

/**
 * ClassName: IntentHandler.java
 *
 * @param <O> the type parameter
 * @param <I> the type parameter
 * @author colley.ma
 * @date 2021年3月19日 上午11:19:57
 */
public interface IntentHandler<O, I> {
    /**
     * 预处理
     *
     * @param request the request
     * @return the o
     */
    public O nextHandle(I request);

    /**
     * 逻辑处理
     *
     * @param request the request
     * @return the o
     */
    public O invoke(I request);

    /**
     * 兜底或则补发处理
     *
     * @param request the request
     * @return o
     */
    public O fallback(I request);

    /**
     * Intent type string.
     *
     * @return string
     */
    public String intentType();

}
